$(function() {
	
	//表格按钮绑定事件，必须放在最上面，不然无效
	window.operateEvents = {
		'click .a' : function (e, value, row, index) {
			alert('编辑');
		},
		'click .b' : function (e, value, row, index) {
			alert('删除');
		}
	};
	
	var userTable = $('#user-table');
	initTable();
	
	var userName = $('#userName')
	
	//激活按钮绑定事件
	$('#active-button').bind('click', active);
	
	//搜索用户，并重置当前页为首页
	$('#search-button').click(function() {
		userTable.bootstrapTable('refresh', {pageNumber:1});
	});
	
	$('#bootstrap-export-excel').click(function() {
		userTable.tableExport($.extend({}, {//dataList是table的id
			tableName: '总台帐报表',
	        type: 'excel',
	        exportDataType : 'all',
	        escape: false
	    }));
	});
	
	//按钮下拉菜单激活
	$('.dropdown-toggle').dropdown();
	
	//初始化表格
	function initTable() {
		var url = 'user2/getUserListByProp';
		userTable.bootstrapTable({
			dataType : 'json',
			cache : false,
			striped : true,	//是否显示行间隔色
			sidePagination : "server",	//分页方式：client客户端分页，server服务端分页（*）
			toolbar: '#toolbar',	//工具按钮用哪个容器
			url : url,
			height : $(window).height() - 110,
	        width : $(window).width() - 110,
	        showColumns : true,	//开启自定义列显示功能
	        sortOrder: 'desc', // 设置排序为反序 desc
	        search: true,	//开启搜索功能
	        pagination : true,
	        queryParams : queryParams,
	        minimumCountColumns : 2,
	        pageNumber : 1,	//初始化加载第一页，默认第一页
	        pageSize : 1,	//每页的记录行数（*）
	        pageList : [1, 2, 3, 6],	//可供选择的每页的行数（*）
	        clickToSelect:true,  
	        uniqueId : "id",	//每一行的唯一标识，一般为主键列		undefined
	        responseHandler : responseHandler,
	        showRefresh : true,	//是否显示刷新按钮
//	        showPaginationSwitch : true,	//展示页数的选择？
	        paginationPreText : '上一页',
	        paginationNextText : '下一页',
//	        trimOnSearch: true,
//	        aLengthMenu : [[10, 25, 50, 100, -1], ["10条", "25条", "50条", "100条", "所有数据"]],
	        
	        showExport : true,
	        exportDataType : 'basic', //导出excel
//	        exportTypes:['excel'],	//导出文件类型
//	        Icons:'glyphicon-export',
//	        exportOptions:{
//	            ignoreColumn: [0,1],  //忽略某一列的索引
//	            fileName: '总台帐报表',  //文件名称设置  
//	            worksheetName: 'sheet1',  //表格工作区名称  
//	            tableName: '总台帐报表',  
//	            excelstyles: ['background-color', 'color', 'font-size', 'font-weight'],  
//	            onMsoNumberFormat: DoOnMsoNumberFormat  
//	        },
	        columns : [
	        	{
	        		field : 'checkbox',
	        		valign : 'middle',
	        		checkbox : true
	        	},
	        	//添加行号
	        	{
	        		field : 'number',
	        		valign : 'middle',
	        		formatter : function(value, row, index) {
	        			//return index + 1;
	                    var options = userTable.bootstrapTable('getOptions');
	                    return options.pageSize * (options.pageNumber - 1) + index + 1;  
					}
	        	},
	        	{
	        		field : 'userId',
	        		title : 'id',
	        		align : 'left',
	        		valign : 'middle',
	        		sortable : 'true',
	        		//隐藏该列
	        		visible : false
	        	},
	        	{
	        		field : 'userName',
	        		title : '用户名',
	        		align : 'left',
	        		valign : 'middle',
	        		sortable : 'true'
	        	},
	        	{
	        		field : 'userPassword',
	        		title : '密码',
	        		align : 'left',
	        		valign : 'middle',
	        		sortable : 'true'
	        	},
	        	{
	        		field : 'userSex',
	        		title : '性别',
	        		align : 'left',
	        		valign : 'middle',
	        		sortable : 'true',
	        		formatter : function(value, row, index) {
	        			if (value == 0) {
							return '男';
						} else if (value == 1) {
							return '女';
						} else {
							return '未知';
						}
	        		}
	        	},
	        	{
	        		field : 'operate',
	        		title : '操作',
	        		events : operateEvents,
	        		formatter : operateFormatter
	        	}
	        ]
		});
	}
	
	//表格往后端传递的参数
	function queryParams(params) {
		var formData = $('#search-form').serialize();
		formData = decodeURIComponent(formData,true);	//防止中文乱码
		var formJsonData = formToJson(formData);
		var param = {
			offset : this.offset, // 页码
			limit : this.limit, // 页面大小
			pageindex : this.pageNumber,
	        pageSize : this.pageSize,
	        formData : formJsonData
		}
		return param;
		//也可以直接这么写
//		params['project_id'] = $("select[name=project_id]").find("option:selected").val();  
//		params['time_field'] = $("select[name=time_field]").find("option:selected").val();  
//		params['start_time'] = $("input[name=start_time]").val();  
//		params['end_time'] = $("input[name=end_time]").val();  
	}
	
	//server分页
	function responseHandler(res) { 
        return {
            "rows" : res.data.users,
            "total" : res.data.totalNum
        };
	}
	
	//添加按钮
	function operateFormatter(value, row, index) {
		return [
			'<button class="a" style="margin-right:15px;">编辑</button>',
			'<button type="button" class="b" style="margin-right:15px;">删除</button>'
		].join('');
	}
	
	//激活按钮绑定事件
	function active() {
		var a = userTable.bootstrapTable('getSelections');
		if (a != null && a.length > 0) {
			console.log('所选行:' + a);
			console.log('用户名:' + a[0].userName);
		}
		//这里可以绑定ajax事件
	}
	
	//将从form中通过$('#refer').serialize()获取的值转成json
    function formToJson (data) {
        data=data.replace(/&/g,"\",\"");
        data=data.replace(/=/g,"\":\"");
        data="{\""+data+"\"}";
        return data;
    }
    
    function DoOnMsoNumberFormat(cell, row, col) {
    	alert('DoOnMsoNumberFormat');
        var result = "";  
        if (row > 0 && col == 0)  
            result = "\\@";  
        return result;  
    }
    
    
	
});

/**
 * 导出选中行数据
 */
function exportSelectedData() {
	var userTable = $('#user-table');
	var selectedDatas = userTable.bootstrapTable('getSelections');
	if (selectedDatas == null || selectedDatas.length == 0) {
		alert('请选中需要导出的数据行');
		return;
	}
	var json = JSON.stringify(selectedDatas);
	
	/**
	 * 获取headers
	 * 这里只会获取没有隐藏和有title的列
	 */
	var nodes = $('#user-table thead tr').children();
	var headers = '';
	$.each(nodes,function(i,item){
		var textContent = item.textContent;
		//不需要导出按钮那一列
		if (textContent != null && textContent != '' && textContent != '操作') {
			headers += textContent + ',';
		}
	});
	//去掉最后一个逗号
	headers = headers.substring(0, headers.length - 1);
	//调用post方法
	postCurrentData('user2/exportSelectedData', {headers:headers,json:json});
}

/**
 * 导出当前页数据
 */
function exportCurrentData() {
	var userTable = $('#user-table');
	var tableDataJson = userTable.tableToJSON();
	console.log('tableDataJson:' + tableDataJson);
	var json = JSON.stringify(tableDataJson);
	//这里只会获取没有隐藏和有title的列
	var nodes = $('#user-table thead tr').children();
	var headers = '';
	$.each(nodes,function(i,item){
		var textContent = item.textContent;
		if (textContent != null && textContent != '' && textContent != '操作') {
			headers += textContent + ',';
		}
	});
	//去掉最后一个逗号
	headers = headers.substring(0, headers.length - 1);
	//调用post方法
	postCurrentData('user2/exportCurrentData', {headers:headers,json:json});
}

/**
 * 导出所有表格数据
 */
function exportAllData() {
	//这里只会获取没有隐藏和有title的列
	var nodes = $('#user-table thead tr').children();
	var headers = '';
	$.each(nodes,function(i,item){
		var textContent = item.textContent;
		if (textContent != null && textContent != '' && textContent != '操作') {
			headers += textContent + ',';
		}
	});
	//去掉最后一个逗号
	headers = headers.substring(0, headers.length - 1);
	//调用post方法
	postAllData('user2/exportAllData', {headers:headers});
}

function postCurrentData(url, params) {
	//创建Form
    var form = document.createElement("form");
    form.action = url;
    form.method = 'post';
    form.style.display = 'none';
    for ( var x in params) {
		var opt = document.createElement("input");
		opt.name = x;
		opt.value = params[x];
		form.appendChild(opt);
	}
    $('body').append(form);
    form.submit();
    return form;
}

function postAllData(url, params) {
	//创建Form
    var form = document.createElement("form");
    form.action = url;
    form.method = 'post';
    form.style.display = 'none';
    for ( var x in params) {
		var opt = document.createElement("input");
		opt.name = x;
		opt.value = params[x];
		form.appendChild(opt);
	}
    $('body').append(form);
    form.submit();
    return form;
}

